const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    user_id: '',
    isLoading: false,
    testList: [], // 测评列表
    pageNo: 1,
    pageSize: 10,
    pageTotal: 1
  },

  getData() {
    this.setData({
      url: app.globalData.URL
    });

    // 防止重复加载
    if (this.data.isLoading) return;

    this.setData({
      isLoading: true
    });

    wx.showLoading({
      title: '数据加载中...',
      mask: true
    });

    let that = this;

    // 第一步：获取 test_id 数组
    wx.request({
      method: 'GET',
      url: that.data.url + 'mytest/find', // 获取 test_id
      data: {
        id: this.data.user_id,
        pageNum: this.data.pageNo,
        pageSize: 10
      },
      success(res) {
        if (res.data && res.data.data && Array.isArray(res.data.data.list)) {
          const testIds = res.data.data.list; // 直接使用 list
          that.getTestDetails(testIds); // 调用方法获取测评详细信息
        } else {
          wx.showToast({
            title: '未获取到测试 ID',
            icon: 'none'
          });
        }
      },
      fail() {
        wx.showToast({
          title: '加载失败，请稍后重试',
          icon: 'none'
        });
      },
      complete() {
        wx.hideLoading();
        wx.stopPullDownRefresh();
        that.setData({
          isLoading: false
        });
      }
    });
  },

  getTestDetails(testIds) {
    let that = this;

    // 遍历 testIds 并获取测评详细信息
    const promises = testIds.map(testId => {
      return new Promise((resolve, reject) => {
        wx.request({
          method: 'GET',
          url: that.data.url + 'heartmark/selectById', // 获取测评详细信息
          data: {
            id: testId // 传入 test_id
          },
          success(res) {
            if (res.data && res.data.data) {
              resolve(res.data.data); // 返回测评数据
            } else {
              resolve(null); // 如果没有数据返回，解决为 null
            }
          },
          fail() {
            reject('请求失败');
          }
        });
      });
    });

    // 等待所有请求完成
    Promise.all(promises).then(results => {
      const filteredResults = results.filter(item => item); // 过滤掉 null
      that.setData({
        testList: filteredResults // 更新测试列表
      });
    });
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.setData({
      user_id: app.globalData.userInfo.id,
    });
    this.getData();
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    // 重置数据并重新加载
    this.setData({
      testList: [],
      pageNo: 1,
      isLoading: false // 重置加载状态
    });
    this.getData();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    // 防止重复加载
    if (this.data.pageNo * this.data.pageSize >= this.data.pageTotal) {
      wx.showToast({
        title: '没有更多数据了',
        icon: 'none'
      });
      return;
    }

    // 加载下一页
    this.setData({
      pageNo: this.data.pageNo + 1
    });
    this.getData();
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  onShow(){
    this.setData({
      user_id: app.globalData.userInfo.id,
    });
    this.getData();
  }

  
});
